package com.mhh.selary.backend.api.user;

import com.mhh.sdk.beans.dto.LoginUser;
import com.mhh.sdk.beans.dto.PageResultDTO;
import com.mhh.selary.backend.dto.IdDTO;
import com.mhh.selary.backend.dto.user.LoginDTO;
import com.mhh.selary.backend.dto.user.LoginSuccessDTO;
import com.mhh.selary.backend.dto.user.UserChangePwdDTO;
import com.mhh.selary.backend.dto.user.UserInfoDTO;
import com.mhh.selary.backend.dto.user.UserInitPwdDTO;
import com.mhh.selary.backend.dto.user.UserListDTO;
import com.mhh.selary.backend.dto.user.UserQueryDTO;
import com.mhh.selary.backend.dto.user.UserResetPwdDTO;
import com.mhh.selary.backend.dto.user.UserSaveDTO;
import com.mhh.selary.backend.dto.user.UserSwitchDTO;

/**
 * ISelaryUserAccountService
 *
 * @author 人工智能
 * @date 2020-11-11 14:24:36
 */
public interface ISelaryUserAccountService {

    /**
     * 登录
     *
     * @param dto
     * @return
     */
    LoginSuccessDTO login(LoginDTO dto);

    /**
     * 验证灰名单，主要验证token是否过期，用户id和用户名是否匹配，token是否合法
     *
     * @param token
     * @return
     */
    LoginUser loginVerify(String token);

    /**
     * 账号列表
     *
     * @param dto
     * @return
     */
    PageResultDTO<UserListDTO> list(UserQueryDTO dto);

    /**
     * 账号详情
     *
     * @param dto
     * @return
     */
    UserInfoDTO detail(IdDTO dto);

    /**
     * 账号保存
     *
     * @param dto
     */
    void save(UserSaveDTO dto);

    /**
     * 修改初始化密码
     *
     * @param dto
     */
    void initPwd(UserInitPwdDTO dto);

    /**
     * 修改本人密码
     *
     * @param dto
     */
    void changePwd(UserChangePwdDTO dto);

    /**
     * 重置密码
     *
     * @param dto
     * @return
     */
    UserResetPwdDTO resetPwd(IdDTO dto);

    /**
     * 启用/禁用
     *
     * @param dto
     * @return
     */
    void switchUser(UserSwitchDTO dto);

    /**
     * 删除账号
     *
     * @param dto
     * @return
     */
    void deleteUser(IdDTO dto);

}
